package com.castile.secondkill.service;

import com.castile.secondkill.exception.BusinessException;
import com.castile.secondkill.service.model.ItemModel;

import java.util.List;

/**
 * 商品服务接口
 *
 * @author Hongliang Zhu
 * @create 2023-03-05 23:29
 */
public interface ItemService {
    /**
     * 创建商品
     *
     * @param itemModel 商品模型
     * @return 返回创建好的商品
     * @throws BusinessException 异常信息
     */
    ItemModel createItem(ItemModel itemModel) throws BusinessException;

    /**
     * 商品列表浏览
     *
     * @return 商品列表
     */
    List<ItemModel> listItem();

    /**
     * 商品详情浏览
     *
     * @param id 商品id
     * @return 商品模型
     */
    ItemModel getItem(Integer id);

    /**
     * 库存扣减
     *
     * @param itemId 商品id
     * @param amount 扣减的数量
     * @return 是否扣减成功
     */
    boolean decreaseStock(Integer itemId, Integer amount);

    /**
     * 商品销量增加
     *
     * @param itemId 商品ID
     * @param amount 销量增加数量
     */
    void increaseSales(Integer itemId, Integer amount);
}
